//app.js 这个是全局入口文件
App({
  // 1.生命周期回调——监听小程序初始化
  // 小程序初始化完成时触发，全局只触发一次
  onLaunch: function (options) {
    // 自定义头部导航栏 navigationStyle
    // 判断是否由分享进入小程序
    if (options.scene == 1007 || options.scene == 1008) {
      this.globalData.share = true
    } else {
      this.globalData.share = false
    };
    //获取设备顶部窗口的高度（不同设备窗口高度不一样，根据这个来设置自定义导航栏的高度）
    //这个最初我是在组件中获取，但是出现了一个问题，当第一次进入小程序时导航栏会把
    //页面内容盖住一部分,当打开调试重新进入时就没有问题，这个问题弄得我是莫名其妙
    //虽然最后解决了，但是花费了不少时间
    wx.getSystemInfo({
      success: (res) => {
        this.globalData.height = res.statusBarHeight
      }
    })

    // 在应用第一次启动的时候获取用户的个人信息
    // console.log("小程序初始化完成时触发，全局只触发一次")
    // js的方式来跳转 不能触发onPageNotFound事件
    // wx.navigateTo({
    //   url: '/111/222/333',
    // })

    // 展示本地存储能力
    var logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)

    // 登录
    wx.login({
      success: res => {
        // console.log(res)
        // 发送 res.code 到后台换取 openId, sessionKey, unionId

        // wx.request()发送code到开发者服务器 详见登录流程图
        wx.request({
          // url: 'http://xxxx', // 发送res.code到开发者服务器中
          url: '',
          data: {
            code: res.code
          },
          header: {'content-type':'application/json'},
          method: 'GET',
          dataType: 'json',
          responseType: 'text',
          success: (result)=>{
            console.log(result)
          },
          fail: ()=>{},
          complete: ()=>{}
        });
      }
    })

    // 获取用户信息
    wx.getSetting({
      success: res => {
        // console.log(res)
        if (res.authSetting['scope.userInfo']) {
          // 已经授权，可以直接调用 getUserInfo 获取头像昵称，不会弹框
          wx.getUserInfo({
            success: res => {
              // 可以将 res 发送给后台解码出 unionId
              // console.log(res)
              this.globalData.userInfo = res.userInfo

              // 由于 getUserInfo 是网络请求，可能会在 Page.onLoad 之后才返回
              // 所以此处加入 callback 以防止这种情况
              if (this.userInfoReadyCallback) {
                this.userInfoReadyCallback(res)
              }
            }
          })
        }
      }
    })
  },

  // 2.生命周期回调——监听小程序启动或切前台。   
  // 应用被用户看到 应用场景: 当页面被重新看到的时候,对整个应用的数据或一些页面的数据进行重置
  onShow: function() {
    // console.log('页面被重新看到')
  },

  // 3.生命周期回调——监听小程序切后台。
  // 应用被隐藏了应用场景: 暂停或者清除定时器
  onHide: function() {
    // console.log(' 应用被隐藏了')
  },

  // 4.错误监听函数
  // 应用的代码发生了报错的时候就会触发 应用场景: 在应用发生代码报错的时候,收集用户的错误信息,通过异步请求将错误的信息发送后台去
  onError: function(err) {
    // console.log('onError')
    console.log(err)
  },

  // 5.页面不存在监听函数
  // 页面找不到就触发这个函数。应用场景: 应用第一次启动的时候,如果找不到第一个入口页面才会触发
  onPageNotFound: function() {
    console.log('onPageNotFound')
    // 如果页面不存在了 通过js的方式来重新跳转页面 重新跳到第二个首页
    wx.navigateTo({
      url: '/pages/demo09/demo09',
    })
  },

  globalData: {
    userInfo: null
  },

  // 申明全局变量
  afanfan: {
    sex: 'boy',
    adress: '广州',
    share: false,  // 分享默认为false
    height: 0
  }
})